/**
 * 认证相关的JavaScript函数
 */

// 检查用户是否已登录
function isAuthenticated() {
    return sessionStorage.getItem('isLoggedIn') === 'true';
}

// 设置登录状态
function setLoginStatus(status) {
    sessionStorage.setItem('isLoggedIn', status);
}

// 获取当前用户信息
function getCurrentUser() {
    const username = sessionStorage.getItem('username');
    return username ? { username } : null;
}

// 登录函数
async function login(username, password) {
    try {
        const response = await fetch('/api/login', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json;charset=UTF-8'
            },
            body: JSON.stringify({ user_name: username, password: password })
        });
        
        const data = await response.json();
        
        if (response.ok && data.code === 200) {
            setLoginStatus(true);
            sessionStorage.setItem('username', username);
            return { success: true };
        } else {
            return { 
                success: false, 
                message: data.message || '登录失败，请检查用户名和密码'
            };
        }
    } catch (error) {
        console.error('登录请求失败', error);
        return { 
            success: false, 
            message: '网络错误，请稍后重试'
        };
    }
}

// 检查用户名是否已存在
async function checkUsernameExists(username) {
    try {
        const encodedUsername = encodeURIComponent(username);
        const response = await fetch(`/user?user_name=${encodedUsername}`, {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json;charset=UTF-8'
            }
        });
        
        const data = await response.json();

        // 判断返回的数据中是否包含用户信息
        return data.data !== null;
    } catch (error) {
        console.error('检查用户名请求失败', error);
        return false;
    }
}

// 注册函数
async function register(username, password, email) {
    try {
        // 先检查用户名是否已存在
        const exists = await checkUsernameExists(username);
        if (exists) {
            return {
                success: false,
                message: '用户名已存在，请使用其他用户名'
            };
        }

        const response = await fetch('/user', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json;charset=UTF-8'
            },
            body: JSON.stringify({ user_name: username, password: password, email: email })
        });
        
        const data = await response.json();
        
        if (response.ok && data.code === 200) {
            // 注册成功后自动返回登录界面
            window.location.href = '/';
            return {
                success: true,
                message: 'success'
            };
        } else {
            return { 
                success: false, 
                message: data.message || '注册失败，请稍后重试'
            };
        }
    } catch (error) {
        console.error('注册请求失败', error);
        return { 
            success: false, 
            message: '网络错误，请稍后重试'
        };
    }
}

// 登出函数
function logout() {
    // 清除登录状态和用户信息
    sessionStorage.removeItem('isLoggedIn');
    sessionStorage.removeItem('username');
    window.location.href = '/';
}